/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.assembler.input;

import java.util.ArrayList;
import java.util.List;

import fr.generali.accueilclient.client.om.IClientRecherche;
import fr.generali.accueilclient.client.om.IUserInformation;
import fr.generali.accueilclient.client.om.NaturePersonne;
import fr.generali.accueilclient.client.om.impl.ClientRecherche;
import fr.generali.accueilclient.client.om.impl.UserInformation;

/**
 * Permet de construire un {@link IClientRecherche}
 * 
 * @author Guillaume Lancelin
 */
public class ClientRechercheBuilder {

    /**
     * 
     */
    public static final String USER_IAM = "siegetosca";

    /**
     * 
     */
    public static final String CODE_INTERMEDIAIRE_1 = "780007";
    
    /**
     * 
     */
    public static final String CODE_INTERMEDIAIRE_2 = "010001";
    
    /**
     * 
     */
    public static final String CODE_POSTAL = "75012";

    /**
     * 
     */
    public static final String NOM = "ROMANOVA";

    /**
     * 
     */
    public static final String NUMERO_CLIENT_AGENT = "01002";

    /**
     * 
     */
    public static final String NUMERO_CONTRAT = "A1234567";

    /**
     * 
     */
    public static final String PRENOM = "Natacha";

    /**
     * 
     */
    public static final String SIRET = "12345678912345";

    /**
     * 
     */
    public static final String TYPE_CLIENT = "AC";

    /**
     * Constructeur
     */
    protected ClientRechercheBuilder() { }
    
    /**
     * @return un {@link IClientRecherche}
     */
    public static IClientRecherche build() {
        IUserInformation userInfo = new UserInformation();
        userInfo.setCompteAccedant(USER_IAM);
        userInfo.setIdIam(USER_IAM);
        List<String> listeCodeIntermediaire = new ArrayList<String>();
        listeCodeIntermediaire.add(CODE_INTERMEDIAIRE_1);
        listeCodeIntermediaire.add(CODE_INTERMEDIAIRE_2);
        
        IClientRecherche criteres = new ClientRecherche();
        criteres.setUserInfo(userInfo);
        criteres.setListeCodeIntermediaire(listeCodeIntermediaire);
        
        List<NaturePersonne> liste = new ArrayList<NaturePersonne>();
        liste.add(NaturePersonne.PARTICULIER);
        liste.add(NaturePersonne.PROFESSIONNEL);
        liste.add(NaturePersonne.COPROPRIETE);
        
        criteres.setCodePostal(CODE_POSTAL);
        criteres.setNaturePersonne(liste);
        criteres.setNom(NOM);
        criteres.setNumeroClientAgent(NUMERO_CLIENT_AGENT);
        criteres.setNumeroContrat(NUMERO_CONTRAT);
        criteres.setPrenom(PRENOM);
        criteres.setSiret(SIRET);
        criteres.setTypeClient(TYPE_CLIENT);
        criteres.setRechercheLike(true);
        
        return criteres;
    }
}
